//require.context的用法详情请查看https://webpack.js.org/guides/dependency-management/#require-context
//三个参数分别为，需要查找的目录，是否查找子目录，要匹配文件的正则
const modulesFiles = require.context('../packages', true, /index.js/)

const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  // ./input/index.js => input
  const moduleName = modulePath.split('/')[1]
  const value = modulesFiles(modulePath)
  modules[moduleName] = value.default
  return modules
}, {})

// components是packages文件夹底下的所有的组件
const components = Object.values(modules)
// 注册所有组件的方法
const install = Vue => {
  components.forEach(component => Vue.component(component.name, component))
}

if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}

modules.install = install

export default modules
